The background description provided herein is for the purpose of generally presenting the context of the disclosure. Work of the presently named inventors, to the extent it is described in this background section, as well as aspects of the description that may not otherwise qualify as prior art at the time of filing, are neither expressly nor impliedly admitted as prior art against the present disclosure.
Graphic components displayed and edited within a computer-aided design system may include named values (i.e., parameters) and formulas that consume the parameters to calculate new values and drive behaviors of a user interface (“UI”). For example, a computer-aided design system may include a familiar spreadsheet or other interface that includes parameters describing basic measurements (e.g., Length=5, Width=5) associated with graphic components, as well as formulas that define relationships between parameters (e.g., Area=Length×Width). Systems that include parameters associated with components and formulas to consume the parameters may generally be described as “parametric.” Web-based parametric systems associated with consumer products may include interfaces related to furniture, shelving lines, storage systems, cabinetry, computer hardware, etc. Such systems may allow a user to configure parameters in a web-based shopping or design environment (e.g., material thickness, overall object height or width, type of random access memory (RAM), etc.) where a change of one parameter affects other parameters (e.g., changing the height of a bookshelf may not only change the dimensions of the bookshelf, but also the number of shelves).
In addition to the parameters, formulas to configure the goods may also be changed resulting in commensurate changes to the end product. For example, a design system may employ a spreadsheet interface to simplify changing the behavior of a graphic component for users that are unfamiliar with computer programming. In the spreadsheet interface, the user may enter familiar spreadsheet-style formulas to create complex and powerful behaviors in the graphic components, which may be 3D objects representing consumer goods, for example. As another example, a costing spreadsheet may take a number of user options and generate a price for a consumer good. A configurable consumer product such as a desk may have a complicated pricing formula involving dozens of options, hundreds of parts, dimensions, and associated costs such as labor, packaging, shipping, regional availability, sales tax tables, etc. Often, the formulas of these pricing sheets are confidential sales tools or trade secrets that are protected from public disclosure.
While parametric systems with spreadsheet interfaces may be relatively easy to use, performance issues in implementing user parameters and formulas increases as the complexity of the parametric system increases. For example, each time that a formula or parameter is modified within a spreadsheet or other interface, the parametric system must translate the entry into a usable type (e.g., from String to Integer), parse the entry to determine the user's intent and the formula's yield, as well as report any feedback or errors.
For instance, in current parametric systems, a user enters parameters and formulas in a user interface such as the cells of a spreadsheet as in Table 1, below. If the user changes the value for Width, past parametric systems translated the input from a String type to an Integer or other numeric type, converted the units for Width (e.g., from metric to English, from meters to centimeters, etc.), parsed the formulas for Volume from String type into computer operations, executed the parsed formulas, translated the formula results back to String types, and updated the UI. Even in trivial examples, this process may be computationally expensive and slow.
TABLE 1WidthHeightDepthVolume100 m100 m100 mVOLUME_IN_METERS is“=((parseLengthString(Width)*parseLengthString(Height)*parseLengthString(Depth)) & ‘m’”VOLUME_IN_CM is“=round(parseLengthString(VOLUME_IN_METERS)*(100*100), 1) & ‘cm’”